<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES6的类语法</title>
</head>
<body>
    <script>
        /*
        ES6的类语法
          +语法：
            class 类名｛
            //原先ES5内构造函数体
            constructor(){}

            //直接书写原型上的方法即可

            //书写静态属性和方法，需要加上static关键字即可
            ｝
          +注意：必须和new关键字连用
            => 不和new关键字连用，会直接报错



        */

        //普通构造函数写法
        // function Person(name,age){
        //    this.name=name
        //    this.age=age 
        // }
        // //原型添加一个方法
        // //2.原型上的方法，目的是为了给实例使用
        // Person.prototype.sayHi=() =>{console.log('hello world')}  

        //   //书写静态属性和方法
        // Person.a=100
        // Person.go=function(){console.log('跑起来')}

        // var p1=new Person('Jack',18)
        // console.log(p1)
        // p1.sayHi()

        // // 1.构造函数本质还是一个函数，可以不和 new 关键字连用 会给undefined
        // var p2=Person('Rose',20)
        // console.log(p2)

        // //输出静态属性和方法
        // console.log(Person.a)
        // Person.go()


        //类的书写 就是类的构造函数
        class Person{
            constructor(name,age){
                //这里按照ES5的构造函数体书写
                this.name=name
                this.age=age
            }

            //直接书写原型上的方法即可
            sayHi(){console.log('你好 世界')}

            //静态属性
            static a=100
            //静态方法
            static go(){console.log('running')}
        }
        var p1=new Person('张三',18)
        console.log(p1)
        p1.sayHi()

        //使用静态属性和静态方法
        Person.go()
        console.log(Person.a)
    </script>
</body>
</html>